In wireless communication, devices send and receive messages without being physically coupled. Wireless devices can comprise portable computers, telephones, location sensors (such as those using Global Positioning Systems), and the like. Portable computers with wireless communication capability can be coupled to a wireless and/or wireline communication network, such as the Internet. Wireless networking devices require the use of underlying technology that deals with radio frequencies as well as data transmission. The most widely used set of standards includes Institute of Electrical and Electronic Engineers (IEEE) standard 802.11 (including 802.11a, 11b, 11g, and 11n), and variants thereof.
Reference models, such as the Open System Interconnection (OSI) reference model, define a layered architecture that standardizes a set of protocol levels for exchanging data between computing devices through a communication network. The OSI reference model splits the communication process into seven hierarchical layers.
During an exchange of data between a source device and a receiving device, the source device retrieves data from an application in an upper most layer and passes the application data to a Transmission Control Protocol (TCP) layer in the architecture of the source device. For example, the TCP layer receives a stream of bytes from the application layer, destined for the receiving device. The TCP layer assembles the stream of bytes into TCP messages, or packets (e.g., approximately 1500 bytes per packet) for transmission to the receiving device 104. In the process of assembling the message, header information is pre-pended to the data in the form of a TCP layer header, such as a destination address, an originating address, and a sequence number. When TCP messages arrive at the receiving device, the TCP layer at the receiving site uses the sequence numbers to reconstruct the correct order of the data.
According to the IEEE 802.11 standards, wireless devices seek out and select “access points” (herein sometimes called “AP's”), each of which is coupled to at least one computing device for data communication. AP's might be coupled using a wireline communication link, a wireless communication link, or otherwise. A wireless device coupled to an AP can communicate data to another wireless device that is also coupled to that AP and can, for example, request data from a source device, such as a server in a communication network. In this example, the source device can respond to the request by generating and sending one or more TCP messages.
When a TCP message is sent from a source device to a wireless device via the AP, the wireless device responds to the AP with a media access control level (MAC) acknowledgement (ACK) message, to indicate that the TCP message was received at a MAC layer of the wireless device without error. Some time later, the wireless device generates a TCP ACK message to the sender, to indicate that the TCP message was received at a TCP layer of the wireless device without error. The AP receives the TCP ACK message and transmits the TCP ACK message to the source device, also at the TCP layer.
If the source device does not receive the TCP ACK message within a selected amount of time, it retransmits that TCP message to the destination. It may take awhile for the wireless device to generate the ACK message and transmit the TCP ACK message to the source device via the AP. If the source device stops sending messages until the TCP ACK message is received, valuable transmission time that could be used to send additional TCP messages would be lost.
Some systems reduce the amount of time lost by enabling the source device to continue sending TCP messages until its sending buffer is full. When the buffer is full, the source device stops sending messages until at least one corresponding ACK message is received. If the source device stops sending messages when its buffer is full, there would still be some amount of time that is lost which could have been used to send other TCP messages.